home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / rogue / patch2 < prev    next >
Encoding:
Text File  |  1987-06-13  |  23.7 KB  |  972 lines

  1. #! /bin/sh
  2. # This is a shell archive.  Remove anything before this line, then unpack
  3. # it by saving it into a file and typing "sh file".  To overwrite existing
  4. # files, type "sh file -c".  You can also feed this as standard input via
  5. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  6. # will see the following message at the end:
  7. #        "End of shell archive."
  8. # Contents:  Bugs2 Patches02
  9. # Wrapped by billr@tekred on Fri Jun 12 14:41:14 1987
  10. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  11. if test -f Bugs2 -a "${1}" != "-c" ; then 
  12.   echo shar: Will not over-write existing file \"Bugs2\"
  13. else
  14. echo shar: Extracting \"Bugs2\" \(2652 characters\)
  15. sed "s/^X//" >Bugs2 <<'END_OF_Bugs2'
  16. XHere is a second list of fixes for bugs and non-portable items found in my
  17. Xrogue clone.  Many thanks to those who reported the problems, I would
  18. Xappreciate any further reports, particularly if the stuff below does
  19. Xnot fix what it is intended to fix.
  20. X
  21. X            Tim Stoehr
  22. X            tims@zeus.TEK.COM
  23. X    ----------------------------------------------------
  24. X
  25. X 1.)    Change SCROLL and SCROLLS to SCROL and SCROLS respectively
  26. X        throughout the code.  This is to avoid conflicts with
  27. X        some curses stuff.  If your compiler doesn't complain, you
  28. X        probably don't have to worry about this.
  29. X
  30. X 2.)    Change ALL occurences of the symbol 'UP' to 'UPWARD'.  This prevents
  31. X        the definition in rogue.h from clashing with the curses definition.
  32. X
  33. X 3.)    There may be a nested comment around line 41 in machdep.c.
  34. X        Nuke it.
  35. X
  36. X 4.)    In zap.c, a new version of tele_away() was sent out.  That version
  37. X        needs to have the global variable 'detect_monster' added to the
  38. X        list of extern booleans at the top of zap.c, if it is not already
  39. X        there.
  40. X
  41. X 5.)    In message.c, at the bottom of the routine message(), there is code
  42. X        that looks like:
  43. X
  44. X        if (did_int) {
  45. X            onintr();
  46. X        }
  47. X        cant_int = 0;
  48. X
  49. X        It should look like the following:
  50. X
  51. X        cant_int = 0;
  52. X        if (did_int) {
  53. X            did_int = 0;
  54. X            onintr();
  55. X        }
  56. X
  57. X 6.)   In machdep.c, the routine md_slurp() shoud be changed to what is
  58. X       shown below, otherwise, messages get screwed up on UNIX_BSD4_2.
  59. X       Only the BSD4_2 portion needs to be changed.
  60. X
  61. Xmd_slurp()
  62. X{
  63. X    long ln = 0;
  64. X
  65. X#ifdef UNIX_BSD4_2
  66. X    ioctl(0, FIONREAD, &ln);
  67. X#endif
  68. X#ifdef UNIX_SYSV
  69. X    ioctl(0, TCFLSH, &ln);
  70. X    ln = 0;
  71. X#endif
  72. X
  73. X    ln += stdin->_cnt;
  74. X
  75. X    for (; ln > 0; ln--) {
  76. X        (void) getchar();
  77. X    }
  78. X}
  79. X
  80. X 7.)   In monster.c, in the table m_names near the top of the file,
  81. X       change "aquatar" to "aquator" and "quasit" to "quagga."
  82. X
  83. X 8.)   References to curses internals should be removed for the sake
  84. X       of portability/compatibility.
  85. X
  86. X       In score.c, in the routine quit(), change these two lines:
  87. X
  88. X        orow = curscr->_cury;
  89. X        ocol = curscr->_curx;
  90. X
  91. X        to:
  92. X
  93. X        orow = rogue.row;
  94. X        ocol = rogue.col;
  95. X
  96. X
  97. X        And in message.c, in the routine save_screen(), remove these lines
  98. X        which appear at the beginning of the routine:
  99. X
  100. X        row = curscr->_cury;
  101. X        col = curscr->_curx;
  102. X
  103. X        and remove these lines which appear at the bottom of the routine:
  104. X
  105. X        move(row, col);
  106. X        refresh();
  107. X
  108. X        You can also them remove the local variables, row and col.
  109. END_OF_Bugs2
  110. if test 2652 -ne `wc -c <Bugs2`; then
  111.     echo shar: \"Bugs2\" unpacked with wrong size!
  112. fi
  113. # end of overwriting check
  114. fi
  115. if test -f Patches02 -a "${1}" != "-c" ; then 
  116.   echo shar: Will not over-write existing file \"Patches02\"
  117. else
  118. echo shar: Extracting \"Patches02\" \(19425 characters\)
  119. sed "s/^X//" >Patches02 <<'END_OF_Patches02'
  120. X*** hit.c.orig    Fri May 29 14:20:03 1987
  121. X--- hit.c    Fri Jun 12 13:39:57 1987
  122. X***************
  123. X*** 13,19 ****
  124. X  #include "rogue.h"
  125. X  
  126. X  object *fight_monster = 0;
  127. X- boolean detect_monster;
  128. X  char hit_message[80] = "";
  129. X  
  130. X  extern short halluc, blind, cur_level;
  131. X--- 13,18 ----
  132. X*** inventory.c.orig    Fri May 29 14:20:35 1987
  133. X--- inventory.c    Fri Jun 12 13:12:14 1987
  134. X***************
  135. X*** 184,190 ****
  136. X      short i, j, n;
  137. X      short sylls, s;
  138. X  
  139. X!     for (i = 0; i < SCROLLS; i++) {
  140. X          sylls = get_rand(2, 5);
  141. X          (void) strcpy(id_scrolls[i].title, "'");
  142. X  
  143. X--- 184,190 ----
  144. X      short i, j, n;
  145. X      short sylls, s;
  146. X  
  147. X!     for (i = 0; i < SCROLS; i++) {
  148. X          sylls = get_rand(2, 5);
  149. X          (void) strcpy(id_scrolls[i].title, "'");
  150. X  
  151. X***************
  152. X*** 250,256 ****
  153. X      case UNIDENTIFIED:
  154. X  CHECK:
  155. X          switch(obj->what_is) {
  156. X!         case SCROLL:
  157. X              (void) strcat(desc, item_name);
  158. X              (void) strcat(desc, "entitled: ");
  159. X              (void) strcat(desc, id_table[obj->which_kind].title);
  160. X--- 250,256 ----
  161. X      case UNIDENTIFIED:
  162. X  CHECK:
  163. X          switch(obj->what_is) {
  164. X!         case SCROL:
  165. X              (void) strcat(desc, item_name);
  166. X              (void) strcat(desc, "entitled: ");
  167. X              (void) strcat(desc, id_table[obj->which_kind].title);
  168. X***************
  169. X*** 287,293 ****
  170. X          break;
  171. X      case CALLED:
  172. X  CALL:    switch(obj->what_is) {
  173. X!         case SCROLL:
  174. X          case POTION:
  175. X          case WAND:
  176. X          case RING:
  177. X--- 287,293 ----
  178. X          break;
  179. X      case CALLED:
  180. X  CALL:    switch(obj->what_is) {
  181. X!         case SCROL:
  182. X          case POTION:
  183. X          case WAND:
  184. X          case RING:
  185. X***************
  186. X*** 299,305 ****
  187. X          break;
  188. X      case IDENTIFIED:
  189. X  ID:        switch(obj->what_is) {
  190. X!         case SCROLL:
  191. X          case POTION:
  192. X              (void) strcat(desc, item_name);
  193. X              (void) strcat(desc, id_table[obj->which_kind].real);
  194. X--- 299,305 ----
  195. X          break;
  196. X      case IDENTIFIED:
  197. X  ID:        switch(obj->what_is) {
  198. X!         case SCROL:
  199. X          case POTION:
  200. X              (void) strcat(desc, item_name);
  201. X              (void) strcat(desc, id_table[obj->which_kind].real);
  202. X***************
  203. X*** 419,425 ****
  204. X  object *obj;
  205. X  {
  206. X      switch(obj->what_is) {
  207. X!     case SCROLL:
  208. X          return(id_scrolls);
  209. X      case POTION:
  210. X          return(id_potions);
  211. X--- 419,425 ----
  212. X  object *obj;
  213. X  {
  214. X      switch(obj->what_is) {
  215. X!     case SCROL:
  216. X          return(id_scrolls);
  217. X      case POTION:
  218. X          return(id_potions);
  219. X*** level.c.orig    Fri May 29 14:20:48 1987
  220. X--- level.c    Fri Jun 12 13:13:22 1987
  221. X***************
  222. X*** 275,287 ****
  223. X          dir = RIGHT;
  224. X      } else if (same_col(room1, room2) &&
  225. X          (rooms[room1].top_row > rooms[room2].bottom_row)) {
  226. X!         put_door(&rooms[room1], UP, &row1, &col1);
  227. X          put_door(&rooms[room2], DOWN, &row2, &col2);
  228. X!         dir = UP;
  229. X      } else if (same_col(room1, room2) &&
  230. X          (rooms[room2].top_row > rooms[room1].bottom_row)) {
  231. X          put_door(&rooms[room1], DOWN, &row1, &col1);
  232. X!         put_door(&rooms[room2], UP, &row2, &col2);
  233. X          dir = DOWN;
  234. X      } else {
  235. X          return(0);
  236. X--- 275,287 ----
  237. X          dir = RIGHT;
  238. X      } else if (same_col(room1, room2) &&
  239. X          (rooms[room1].top_row > rooms[room2].bottom_row)) {
  240. X!         put_door(&rooms[room1], UPWARD, &row1, &col1);
  241. X          put_door(&rooms[room2], DOWN, &row2, &col2);
  242. X!         dir = UPWARD;
  243. X      } else if (same_col(room1, room2) &&
  244. X          (rooms[room2].top_row > rooms[room1].bottom_row)) {
  245. X          put_door(&rooms[room1], DOWN, &row1, &col1);
  246. X!         put_door(&rooms[room2], UPWARD, &row2, &col2);
  247. X          dir = DOWN;
  248. X      } else {
  249. X          return(0);
  250. X***************
  251. X*** 337,345 ****
  252. X      wall_width = (rm->is_room & R_MAZE) ? 0 : 1;
  253. X  
  254. X      switch(dir) {
  255. X!     case UP:
  256. X      case DOWN:
  257. X!         *row = ((dir == UP) ? rm->top_row : rm->bottom_row);
  258. X          do {
  259. X              *col = get_rand(rm->left_col+wall_width,
  260. X                  rm->right_col-wall_width);
  261. X--- 337,345 ----
  262. X      wall_width = (rm->is_room & R_MAZE) ? 0 : 1;
  263. X  
  264. X      switch(dir) {
  265. X!     case UPWARD:
  266. X      case DOWN:
  267. X!         *row = ((dir == UPWARD) ? rm->top_row : rm->bottom_row);
  268. X          do {
  269. X              *col = get_rand(rm->left_col+wall_width,
  270. X                  rm->right_col-wall_width);
  271. X***************
  272. X*** 497,503 ****
  273. X                  RIGHT : LEFT;
  274. X          } else {
  275. X              tunnel_dir = (rooms[rn].top_row < rooms[target_room].top_row) ?
  276. X!                 DOWN : UP;
  277. X          }
  278. X          door_dir = ((tunnel_dir + 4) % DIRS);
  279. X          if (rooms[target_room].doors[door_dir/2].oth_room != NO_ROOM) {
  280. X--- 497,503 ----
  281. X                  RIGHT : LEFT;
  282. X          } else {
  283. X              tunnel_dir = (rooms[rn].top_row < rooms[target_room].top_row) ?
  284. X!                 DOWN : UPWARD;
  285. X          }
  286. X          door_dir = ((tunnel_dir + 4) % DIRS);
  287. X          if (rooms[target_room].doors[door_dir/2].oth_room != NO_ROOM) {
  288. X***************
  289. X*** 554,560 ****
  290. X                  RIGHT : LEFT;
  291. X          } else {
  292. X              tunnel_dir = (rooms[rn].top_row < rooms[de].top_row) ?
  293. X!                 DOWN : UP;
  294. X          }
  295. X          draw_simple_passage(srow, scol, drow, dcol, tunnel_dir);
  296. X          r_de = de;
  297. X--- 554,560 ----
  298. X                  RIGHT : LEFT;
  299. X          } else {
  300. X              tunnel_dir = (rooms[rn].top_row < rooms[de].top_row) ?
  301. X!                 DOWN : UPWARD;
  302. X          }
  303. X          draw_simple_passage(srow, scol, drow, dcol, tunnel_dir);
  304. X          r_de = de;
  305. X***************
  306. X*** 588,594 ****
  307. X      char dirs[4];
  308. X      short i, t;
  309. X  
  310. X!     dirs[0] = UP;
  311. X      dirs[1] = DOWN;
  312. X      dirs[2] = LEFT;
  313. X      dirs[3] = RIGHT;
  314. X--- 588,594 ----
  315. X      char dirs[4];
  316. X      short i, t;
  317. X  
  318. X!     dirs[0] = UPWARD;
  319. X      dirs[1] = DOWN;
  320. X      dirs[2] = LEFT;
  321. X      dirs[3] = RIGHT;
  322. X***************
  323. X*** 607,613 ****
  324. X      }
  325. X      for (i = 0; i < 4; i++) {
  326. X          switch(dirs[i]) {
  327. X!         case UP:
  328. X              if (((r-1) >= tr) &&
  329. X                  (dungeon[r-1][c] != TUNNEL) &&
  330. X                  (dungeon[r-1][c-1] != TUNNEL) &&
  331. X--- 607,613 ----
  332. X      }
  333. X      for (i = 0; i < 4; i++) {
  334. X          switch(dirs[i]) {
  335. X!         case UPWARD:
  336. X              if (((r-1) >= tr) &&
  337. X                  (dungeon[r-1][c] != TUNNEL) &&
  338. X                  (dungeon[r-1][c-1] != TUNNEL) &&
  339. X*** machdep.c.orig    Fri Jun 12 13:30:16 1987
  340. X--- machdep.c    Fri Jun 12 13:19:48 1987
  341. X***************
  342. X*** 39,45 ****
  343. X   *      #else
  344. X   *         code;
  345. X   *      #endif /* UNIX_SYSV */
  346. X!  *      }
  347. X   *
  348. X   * Appropriate variations of this are of course acceptible.
  349. X   * The use of "#elseif" is discouraged because of non-portability.
  350. X--- 39,45 ----
  351. X   *      #else
  352. X   *         code;
  353. X   *      #endif /* UNIX_SYSV */
  354. X! /*      }
  355. X   *
  356. X   * Appropriate variations of this are of course acceptible.
  357. X   * The use of "#elseif" is discouraged because of non-portability.
  358. X***************
  359. X*** 82,97 ****
  360. X  
  361. X  md_slurp()
  362. X  {
  363. X!     long ln;
  364. X  
  365. X  #ifdef UNIX_BSD4_2
  366. X!     ioctl(0, TIOCFLUSH, &ln);
  367. X  #endif /* UNIX_BSD4_2 */
  368. X  #ifdef UNIX_SYSV
  369. X      ioctl(0, TCFLSH, &ln);
  370. X  #endif /* UNIX_SYSV */
  371. X  
  372. X!     for (ln = stdin->_cnt; ln > 0; ln--) {
  373. X          (void) getchar();
  374. X      }
  375. X  }
  376. X--- 82,100 ----
  377. X  
  378. X  md_slurp()
  379. X  {
  380. X!     long ln = 0;
  381. X  
  382. X  #ifdef UNIX_BSD4_2
  383. X!     ioctl(0, FIONREAD, &ln);
  384. X  #endif /* UNIX_BSD4_2 */
  385. X  #ifdef UNIX_SYSV
  386. X      ioctl(0, TCFLSH, &ln);
  387. X+     ln = 0;
  388. X  #endif /* UNIX_SYSV */
  389. X  
  390. X!     ln += stdin->_cnt;
  391. X! 
  392. X!     for (; ln > 0; ln--) {
  393. X          (void) getchar();
  394. X      }
  395. X  }
  396. X*** message.c.orig    Fri May 29 14:21:38 1987
  397. X--- message.c    Fri Jun 12 13:21:44 1987
  398. X***************
  399. X*** 48,57 ****
  400. X      msg_cleared = 0;
  401. X      msg_col = strlen(msg);
  402. X  
  403. X      if (did_int) {
  404. X          onintr();
  405. X      }
  406. X-     cant_int = 0;
  407. X  }
  408. X  
  409. X  remessage()
  410. X--- 48,58 ----
  411. X      msg_cleared = 0;
  412. X      msg_col = strlen(msg);
  413. X  
  414. X+     cant_int = 0;
  415. X      if (did_int) {
  416. X+         did_int = 0;
  417. X          onintr();
  418. X      }
  419. X  }
  420. X  
  421. X  remessage()
  422. X***************
  423. X*** 256,268 ****
  424. X  save_screen()
  425. X  {
  426. X      FILE *fp;
  427. X!     short i, j, row, col;
  428. X      char buf[DCOLS+2];
  429. X      boolean found_non_blank;
  430. X  
  431. X-     row = curscr->_cury;
  432. X-     col = curscr->_curx;
  433. X- 
  434. X      if ((fp = fopen("rogue.screen", "w")) != NULL) {
  435. X          for (i = 0; i < DROWS; i++) {
  436. X              found_non_blank = 0;
  437. X--- 257,266 ----
  438. X  save_screen()
  439. X  {
  440. X      FILE *fp;
  441. X!     short i, j;
  442. X      char buf[DCOLS+2];
  443. X      boolean found_non_blank;
  444. X  
  445. X      if ((fp = fopen("rogue.screen", "w")) != NULL) {
  446. X          for (i = 0; i < DROWS; i++) {
  447. X              found_non_blank = 0;
  448. X***************
  449. X*** 282,289 ****
  450. X      } else {
  451. X          sound_bell();
  452. X      }
  453. X-     move(row, col);
  454. X-     refresh();
  455. X  }
  456. X  
  457. X  sound_bell()
  458. X--- 280,285 ----
  459. X*** monster.c.orig    Fri May 29 14:21:49 1987
  460. X--- monster.c    Fri Jun 12 13:23:13 1987
  461. X***************
  462. X*** 16,22 ****
  463. X  boolean mon_disappeared;
  464. X  
  465. X  char *m_names[] = {
  466. X!     "aquatar",
  467. X      "bat",
  468. X      "centaur",
  469. X      "dragon",
  470. X--- 16,22 ----
  471. X  boolean mon_disappeared;
  472. X  
  473. X  char *m_names[] = {
  474. X!     "aquator",
  475. X      "bat",
  476. X      "centaur",
  477. X      "dragon",
  478. X***************
  479. X*** 32,38 ****
  480. X      "nymph",
  481. X      "orc",
  482. X      "phantom",
  483. X!     "quasit",
  484. X      "rattlesnake",
  485. X      "snake",
  486. X      "troll",
  487. X--- 32,38 ----
  488. X      "nymph",
  489. X      "orc",
  490. X      "phantom",
  491. X!     "quagga",
  492. X      "rattlesnake",
  493. X      "snake",
  494. X      "troll",
  495. X***************
  496. X*** 479,485 ****
  497. X      }
  498. X      if (dungeon[row][col] & OBJECT) {
  499. X          obj = object_at(&level_objects, row, col);
  500. X!         if ((obj->what_is == SCROLL) && (obj->which_kind == SCARE_MONSTER)) {
  501. X              return(0);
  502. X          }
  503. X      }
  504. X--- 479,485 ----
  505. X      }
  506. X      if (dungeon[row][col] & OBJECT) {
  507. X          obj = object_at(&level_objects, row, col);
  508. X!         if ((obj->what_is == SCROL) && (obj->which_kind == SCARE_MONSTER)) {
  509. X              return(0);
  510. X          }
  511. X      }
  512. X*** object.c.orig    Fri May 29 14:22:10 1987
  513. X--- object.c    Fri Jun 12 13:24:01 1987
  514. X***************
  515. X*** 50,56 ****
  516. X  {145, "beige \0                          ", "of see invisible ", 0}
  517. X  };
  518. X  
  519. X! struct id id_scrolls[SCROLLS] = {
  520. X  {505, "                                   ", "of protect armor ", 0},
  521. X  {200, "                                   ", "of hold monster ", 0},
  522. X  {235, "                                   ", "of enchant weapon ", 0},
  523. X--- 50,56 ----
  524. X  {145, "beige \0                          ", "of see invisible ", 0}
  525. X  };
  526. X  
  527. X! struct id id_scrolls[SCROLS] = {
  528. X  {505, "                                   ", "of protect armor ", 0},
  529. X  {200, "                                   ", "of hold monster ", 0},
  530. X  {235, "                                   ", "of enchant weapon ", 0},
  531. X***************
  532. X*** 244,250 ****
  533. X      char *retstring;
  534. X  
  535. X      switch(obj->what_is) {
  536. X!     case SCROLL:
  537. X          retstring = obj->quantity > 1 ? "scrolls " : "scroll ";
  538. X          break;
  539. X      case POTION:
  540. X--- 244,250 ----
  541. X      char *retstring;
  542. X  
  543. X      switch(obj->what_is) {
  544. X!     case SCROL:
  545. X          retstring = obj->quantity > 1 ? "scrolls " : "scroll ";
  546. X          break;
  547. X      case POTION:
  548. X***************
  549. X*** 308,314 ****
  550. X          obj->what_is = gr_what_is();
  551. X      }
  552. X      switch(obj->what_is) {
  553. X!     case SCROLL:
  554. X          gr_scroll(obj);
  555. X          break;
  556. X      case POTION:
  557. X--- 308,314 ----
  558. X          obj->what_is = gr_what_is();
  559. X      }
  560. X      switch(obj->what_is) {
  561. X!     case SCROL:
  562. X          gr_scroll(obj);
  563. X          break;
  564. X      case POTION:
  565. X***************
  566. X*** 342,348 ****
  567. X      percent = get_rand(1, 91);
  568. X  
  569. X      if (percent <= 30) {
  570. X!         what_is = SCROLL;
  571. X      } else if (percent <= 60) {
  572. X          what_is = POTION;
  573. X      } else if (percent <= 64) {
  574. X--- 342,348 ----
  575. X      percent = get_rand(1, 91);
  576. X  
  577. X      if (percent <= 30) {
  578. X!         what_is = SCROL;
  579. X      } else if (percent <= 60) {
  580. X          what_is = POTION;
  581. X      } else if (percent <= 64) {
  582. X***************
  583. X*** 366,372 ****
  584. X  
  585. X      percent = get_rand(0, 85);
  586. X  
  587. X!     obj->what_is = SCROLL;
  588. X  
  589. X      if (percent <= 5) {
  590. X          obj->which_kind = PROTECT_ARMOR;
  591. X--- 366,372 ----
  592. X  
  593. X      percent = get_rand(0, 85);
  594. X  
  595. X!     obj->what_is = SCROL;
  596. X  
  597. X      if (percent <= 5) {
  598. X          obj->which_kind = PROTECT_ARMOR;
  599. X***************
  600. X*** 694,701 ****
  601. X          max = POTIONS - 1;
  602. X          break;
  603. X      case '?':
  604. X!         obj->what_is = SCROLL;
  605. X!         max = SCROLLS - 1;
  606. X          break;
  607. X      case ',':
  608. X          obj->what_is = AMULET;
  609. X--- 694,701 ----
  610. X          max = POTIONS - 1;
  611. X          break;
  612. X      case '?':
  613. X!         obj->what_is = SCROL;
  614. X!         max = SCROLS - 1;
  615. X          break;
  616. X      case ',':
  617. X          obj->what_is = AMULET;
  618. X*** pack.c.orig    Fri May 29 14:22:20 1987
  619. X--- pack.c    Fri Jun 12 13:24:32 1987
  620. X***************
  621. X*** 60,66 ****
  622. X      obj = object_at(&level_objects, row, col);
  623. X      *status = 1;
  624. X  
  625. X!     if ((obj->what_is == SCROLL) && (obj->which_kind == SCARE_MONSTER) &&
  626. X          obj->picked_up) {
  627. X          message("the scroll turns to dust as you pick it up", 0);
  628. X          dungeon[row][col] &= (~OBJECT);
  629. X--- 60,66 ----
  630. X      obj = object_at(&level_objects, row, col);
  631. X      *status = 1;
  632. X  
  633. X!     if ((obj->what_is == SCROL) && (obj->which_kind == SCARE_MONSTER) &&
  634. X          obj->picked_up) {
  635. X          message("the scroll turns to dust as you pick it up", 0);
  636. X          dungeon[row][col] &= (~OBJECT);
  637. X***************
  638. X*** 157,163 ****
  639. X  {
  640. X      object *op;
  641. X  
  642. X!     if (!(obj->what_is & (WEAPON | FOOD | SCROLL | POTION))) {
  643. X          return(0);
  644. X      }
  645. X      if ((obj->what_is == FOOD) && (obj->which_kind == FRUIT)) {
  646. X--- 157,163 ----
  647. X  {
  648. X      object *op;
  649. X  
  650. X!     if (!(obj->what_is & (WEAPON | FOOD | SCROL | POTION))) {
  651. X          return(0);
  652. X      }
  653. X      if ((obj->what_is == FOOD) && (obj->which_kind == FRUIT)) {
  654. X***************
  655. X*** 380,386 ****
  656. X      struct id *id_table;
  657. X      char buf[MAX_TITLE_LENGTH+2];
  658. X  
  659. X!     ch = pack_letter("call what?", (SCROLL | POTION | WAND | RING));
  660. X  
  661. X      if (ch == CANCEL) {
  662. X          return;
  663. X--- 380,386 ----
  664. X      struct id *id_table;
  665. X      char buf[MAX_TITLE_LENGTH+2];
  666. X  
  667. X!     ch = pack_letter("call what?", (SCROL | POTION | WAND | RING));
  668. X  
  669. X      if (ch == CANCEL) {
  670. X          return;
  671. X***************
  672. X*** 389,395 ****
  673. X          message("no such item.", 0);
  674. X          return;
  675. X      }
  676. X!     if (!(obj->what_is & (SCROLL | POTION | WAND | RING))) {
  677. X          message("surely you already know what that's called", 0);
  678. X          return;
  679. X      }
  680. X--- 389,395 ----
  681. X          message("no such item.", 0);
  682. X          return;
  683. X      }
  684. X!     if (!(obj->what_is & (SCROL | POTION | WAND | RING))) {
  685. X          message("surely you already know what that's called", 0);
  686. X          return;
  687. X      }
  688. X***************
  689. X*** 450,456 ****
  690. X          (*c == ')') || (*c == ']') || (*c == '/') || (*c == ','))) {
  691. X          switch(*c) {
  692. X          case '?':
  693. X!             *mask = SCROLL;
  694. X              break;
  695. X          case '!':
  696. X              *mask = POTION;
  697. X--- 450,456 ----
  698. X          (*c == ')') || (*c == ']') || (*c == '/') || (*c == ','))) {
  699. X          switch(*c) {
  700. X          case '?':
  701. X!             *mask = SCROL;
  702. X              break;
  703. X          case '!':
  704. X              *mask = POTION;
  705. X*** patchlevel.h.orig    Thu May 28 15:06:56 1987
  706. X--- patchlevel.h    Fri Jun 12 13:24:41 1987
  707. X***************
  708. X*** 1 ****
  709. X! #define PATCHLEVEL 1
  710. X--- 1 ----
  711. X! #define PATCHLEVEL 2
  712. X*** rogue.h.orig    Fri May 29 14:18:42 1987
  713. X--- rogue.h    Fri Jun 12 13:25:27 1987
  714. X***************
  715. X*** 26,32 ****
  716. X  
  717. X  #define ARMOR        ((unsigned short)   01)
  718. X  #define WEAPON        ((unsigned short)   02)
  719. X! #define SCROLL        ((unsigned short)   04)
  720. X  #define POTION        ((unsigned short)  010)
  721. X  #define GOLD        ((unsigned short)  020)
  722. X  #define FOOD        ((unsigned short)  040)
  723. X--- 26,32 ----
  724. X  
  725. X  #define ARMOR        ((unsigned short)   01)
  726. X  #define WEAPON        ((unsigned short)   02)
  727. X! #define SCROL        ((unsigned short)   04)
  728. X  #define POTION        ((unsigned short)  010)
  729. X  #define GOLD        ((unsigned short)  020)
  730. X  #define FOOD        ((unsigned short)  040)
  731. X***************
  732. X*** 68,74 ****
  733. X  #define CREATE_MONSTER 9
  734. X  #define AGGRAVATE_MONSTER 10
  735. X  #define MAGIC_MAPPING 11
  736. X! #define SCROLLS 12
  737. X  
  738. X  #define INCREASE_STRENGTH 0
  739. X  #define RESTORE_STRENGTH 1
  740. X--- 68,74 ----
  741. X  #define CREATE_MONSTER 9
  742. X  #define AGGRAVATE_MONSTER 10
  743. X  #define MAGIC_MAPPING 11
  744. X! #define SCROLS 12
  745. X  
  746. X  #define INCREASE_STRENGTH 0
  747. X  #define RESTORE_STRENGTH 1
  748. X***************
  749. X*** 345,351 ****
  750. X  #define QUIT 4
  751. X  #define WIN 5
  752. X  
  753. X! #define UP 0
  754. X  #define UPRIGHT 1
  755. X  #define RIGHT 2
  756. X  #define RIGHTDOWN 3
  757. X--- 345,351 ----
  758. X  #define QUIT 4
  759. X  #define WIN 5
  760. X  
  761. X! #define UPWARD 0
  762. X  #define UPRIGHT 1
  763. X  #define RIGHT 2
  764. X  #define RIGHTDOWN 3
  765. X*** room.c.orig    Fri May 29 14:22:54 1987
  766. X--- room.c    Fri Jun 12 13:25:59 1987
  767. X***************
  768. X*** 140,146 ****
  769. X  register unsigned short mask;
  770. X  {
  771. X          switch(mask) {
  772. X!         case SCROLL:
  773. X              return('?');
  774. X          case POTION:
  775. X              return('!');
  776. X--- 140,146 ----
  777. X  register unsigned short mask;
  778. X  {
  779. X          switch(mask) {
  780. X!         case SCROL:
  781. X              return('?');
  782. X          case POTION:
  783. X              return('!');
  784. X***************
  785. X*** 404,410 ****
  786. X      short d = -1;
  787. X  
  788. X      if (*row == rooms[rn].top_row) {
  789. X!         d = UP/2;
  790. X      } else if (*row == rooms[rn].bottom_row) {
  791. X          d = DOWN/2;
  792. X      } else if (*col == rooms[rn].left_col) {
  793. X--- 404,410 ----
  794. X      short d = -1;
  795. X  
  796. X      if (*row == rooms[rn].top_row) {
  797. X!         d = UPWARD/2;
  798. X      } else if (*row == rooms[rn].bottom_row) {
  799. X          d = DOWN/2;
  800. X      } else if (*col == rooms[rn].left_col) {
  801. X*** save.c.orig    Fri May 29 14:24:31 1987
  802. X--- save.c    Fri Jun 12 13:26:27 1987
  803. X***************
  804. X*** 92,98 ****
  805. X      r_write(fp, (char *) &rogue, sizeof(fighter));
  806. X      write_pack(&rogue.pack, fp);
  807. X      rw_id(id_potions, fp, POTIONS, 1);
  808. X!     rw_id(id_scrolls, fp, SCROLLS, 1);
  809. X      rw_id(id_wands, fp, WANDS, 1);
  810. X      rw_id(id_rings, fp, RINGS, 1);
  811. X      r_write(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  812. X--- 92,98 ----
  813. X      r_write(fp, (char *) &rogue, sizeof(fighter));
  814. X      write_pack(&rogue.pack, fp);
  815. X      rw_id(id_potions, fp, POTIONS, 1);
  816. X!     rw_id(id_scrolls, fp, SCROLS, 1);
  817. X      rw_id(id_wands, fp, WANDS, 1);
  818. X      rw_id(id_rings, fp, RINGS, 1);
  819. X      r_write(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  820. X***************
  821. X*** 164,170 ****
  822. X      r_read(fp, (char *) &rogue, sizeof(fighter));
  823. X      read_pack(&rogue.pack, fp, 1);
  824. X      rw_id(id_potions, fp, POTIONS, 0);
  825. X!     rw_id(id_scrolls, fp, SCROLLS, 0);
  826. X      rw_id(id_wands, fp, WANDS, 0);
  827. X      rw_id(id_rings, fp, RINGS, 0);
  828. X      r_read(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  829. X--- 164,170 ----
  830. X      r_read(fp, (char *) &rogue, sizeof(fighter));
  831. X      read_pack(&rogue.pack, fp, 1);
  832. X      rw_id(id_potions, fp, POTIONS, 0);
  833. X!     rw_id(id_scrolls, fp, SCROLS, 0);
  834. X      rw_id(id_wands, fp, WANDS, 0);
  835. X      rw_id(id_rings, fp, RINGS, 0);
  836. X      r_read(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  837. X*** score.c.orig    Fri May 29 14:25:01 1987
  838. X--- score.c    Fri Jun 12 13:27:40 1987
  839. X***************
  840. X*** 120,127 ****
  841. X  
  842. X      if (from_intrpt) {
  843. X  
  844. X!         orow = curscr->_cury;
  845. X!         ocol = curscr->_curx;
  846. X          mc = msg_cleared;
  847. X  
  848. X          for (i = 0; i < DCOLS; i++) {
  849. X--- 120,127 ----
  850. X  
  851. X      if (from_intrpt) {
  852. X  
  853. X!         orow = rogue.row;
  854. X!         ocol = rogue.col;
  855. X          mc = msg_cleared;
  856. X  
  857. X          for (i = 0; i < DCOLS; i++) {
  858. X***************
  859. X*** 403,409 ****
  860. X      case WAND:
  861. X          val = id_wands[wc].value * (obj->class + 1);
  862. X          break;
  863. X!     case SCROLL:
  864. X          val = id_scrolls[wc].value * obj->quantity;
  865. X          break;
  866. X      case POTION:
  867. X--- 403,409 ----
  868. X      case WAND:
  869. X          val = id_wands[wc].value * (obj->class + 1);
  870. X          break;
  871. X!     case SCROL:
  872. X          val = id_scrolls[wc].value * obj->quantity;
  873. X          break;
  874. X      case POTION:
  875. X***************
  876. X*** 426,432 ****
  877. X  {
  878. X      short i;
  879. X  
  880. X!     for (i = 0; i < SCROLLS; i++) {
  881. X          id_scrolls[i].id_status = IDENTIFIED;
  882. X      }
  883. X      for (i = 0; i < WEAPONS; i++) {
  884. X--- 426,432 ----
  885. X  {
  886. X      short i;
  887. X  
  888. X!     for (i = 0; i < SCROLS; i++) {
  889. X          id_scrolls[i].id_status = IDENTIFIED;
  890. X      }
  891. X      for (i = 0; i < WEAPONS; i++) {
  892. X*** use.c.orig    Fri May 29 14:25:52 1987
  893. X--- use.c    Fri Jun 12 13:28:05 1987
  894. X***************
  895. X*** 148,154 ****
  896. X      object *obj;
  897. X      char msg[DCOLS];
  898. X  
  899. X!     ch = pack_letter("read what?", SCROLL);
  900. X  
  901. X      if (ch == CANCEL) {
  902. X          return;
  903. X--- 148,154 ----
  904. X      object *obj;
  905. X      char msg[DCOLS];
  906. X  
  907. X!     ch = pack_letter("read what?", SCROL);
  908. X  
  909. X      if (ch == CANCEL) {
  910. X          return;
  911. X***************
  912. X*** 157,163 ****
  913. X          message("no such item.", 0);
  914. X          return;
  915. X      }
  916. X!     if (obj->what_is != SCROLL) {
  917. X          message("you can't read that", 0);
  918. X          return;
  919. X      }
  920. X--- 157,163 ----
  921. X          message("no such item.", 0);
  922. X          return;
  923. X      }
  924. X!     if (obj->what_is != SCROL) {
  925. X          message("you can't read that", 0);
  926. X          return;
  927. X      }
  928. X***************
  929. X*** 336,342 ****
  930. X          goto AGAIN;
  931. X      }
  932. X      obj->identified = 1;
  933. X!     if (obj->what_is & (SCROLL | POTION | WEAPON | ARMOR | WAND | RING)) {
  934. X          id_table = get_id_table(obj);
  935. X          id_table[obj->which_kind].id_status = IDENTIFIED;
  936. X      }
  937. X--- 336,342 ----
  938. X          goto AGAIN;
  939. X      }
  940. X      obj->identified = 1;
  941. X!     if (obj->what_is & (SCROL | POTION | WEAPON | ARMOR | WAND | RING)) {
  942. X          id_table = get_id_table(obj);
  943. X          id_table[obj->which_kind].id_status = IDENTIFIED;
  944. X      }
  945. X*** zap.c.orig    Fri May 29 14:26:04 1987
  946. X--- zap.c    Fri Jun 12 13:29:07 1987
  947. X***************
  948. X*** 14,20 ****
  949. X  
  950. X  boolean wizard = 0;
  951. X  
  952. X! extern boolean being_held, score_only;
  953. X  
  954. X  zapp()
  955. X  {
  956. X--- 14,20 ----
  957. X  
  958. X  boolean wizard = 0;
  959. X  
  960. X! extern boolean being_held, score_only, detect_monster;
  961. X  
  962. X  zapp()
  963. X  {
  964. END_OF_Patches02
  965. if test 19425 -ne `wc -c <Patches02`; then
  966.     echo shar: \"Patches02\" unpacked with wrong size!
  967. fi
  968. # end of overwriting check
  969. fi
  970. echo shar: End of shell archive.
  971. exit 0
  972.